# 1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素,
# l=[]
# def jishu (a):
#     for i in a:
#         if i % 2 == 0:
#             pass
#         else:
#             l.append(i)
#     return l
# cc=[1,2,3,4,5,6,7,8,9]
# ccc=(1,2,3,4,5,6,7,8,9,10,11)
# print(jishu(ccc))

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5

# def changdu(a):
#     if len(a) > 5:
#         return True
#     else:
#         return False
# string1 = "shabiliuchuang"
# print(changdu(string1))
# list1 = [1,2,3,4,5,6,7,8,9]
# print(changdu(list1))
# tuple1 = (1,2,3,4)
# print(changdu(tuple1))

#
# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# def geshu (string1):
#     sum_figure=0
#     sum_letter = 0
#     sum_space=0
#     sum_character=0
#     for i in string1:
#         if i>="0" and i<="9":
#             sum_figure=sum_figure+1
#         elif (i>="a" and i<="z") or (i>="A" and i<="Z"):
#             sum_letter=sum_letter+1
#         elif i==" ":
#             sum_space+=1
#         else:
#             sum_character+=1
#     print(f"数字{sum_figure},字母{sum_letter},空格{sum_space},其他字符{sum_character}")
#
# string2="asdfgh123456 1 $#@!%"
# geshu(string2)
#
# 4、写函数,接收两个数字参数,返回较大的那个数字
# def find_max(num1,num2):
#     if num1>num2:
#         return num1
#     else:
#         return num2
# numbers1 = 1
# numbers2 = 2
# max_numbers = find_max(numbers1,numbers2)
# print(max_numbers)
#
#
# 5、佩奇去超市购买54元巧克力和53元果冻，货币面值有20、10、2、1元，按付款货币数量最少原则，佩奇需要付给超市多少数量的货币，编写函数实现该算法。
#

# 6、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# 元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.
#

# def cacluate(*avgs):
#     list1 = []
#     Sum = sum(avgs)
#     avg = Sum/len(avgs)
#     for i in avgs:
#         if i > avg:
#             list1.append(i)
#     return avg,list1
# data = cacluate(1,2,3,4,5,6,7,8,9)
# print(data)

# 7、编写一个函数, 接收字符串参数, 返回一个元组,
# 元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
#
# def str1(zfc):
#     big_ = 0
#     smail_ = 0
#     for i in zfc:
#         if i >= "a" and i <= "z":
#             smail_ += 1
#         elif i >= "A" and i <= "Z":
#             big_ += 1
#     return big_,smail_
# data = str1("QWERTYUIOasdfghjkl")
# print(data)

# 8、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)
# 和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;
#
# def reverse_list(lst, k):
#     reversed_lst = lst[:k][::-1] + lst[k:][::-1]
#     return reversed_lst
# import random
#
# lst = [random.randint(1, 100) for _ in range(30)]
# k = 10
#
# result = reverse_list(lst, k)
# print(result)

# def list1():
# 9、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值
#
# def calculate_expression(x, n):
#     expression = ''
#     total_sum = 0
#
#     for i in range(1, n + 1):
#         term = str(x) * i
#         expression += term
#
#         if i < n:
#             expression += ' + '
#
#         total_sum += int(term)
#
#     print(f'表达式: {expression}')
#     print(f'前{n}项的值: {total_sum}')
#
#
# x = int(input("请输入参数x："))
# n = int(input("请输入参数n："))
# #
# calculate_expression(x, n)

# 10、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
#
# def files(name,age,address ,sex = '男'):
#     # return {"姓名":name,"年龄":age,"地址":address,"性别":sex}
#     print("姓名：", name)
#     print("年龄：", age)
#     print("地址：", address)
#     print("性别：", sex)
# files("刘闯",25,"上海")

# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
#
#
# 函数接收到这些内容,将其追加到student_msg文件中
#
# 重点:复习文件操作
#
# 11、写函数,接收n个数字,返回这些数字的和(动态传参)
#
# def func(*args):
#     sum_all = 0
#     for i in args:
#         sum_all += i
#     return sum_all
# print(func(1, 5, 7, 8))
# 12、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里
#
# def func(*args,**kwargs):
#     new_args = []
#     new_kwages = {}
#     for table in args:
#         if isinstance(table,(str,list,tuple,set)):
#             new_args.extend(table)
#         elif isinstance(table,dict):
#             new_kwages.update(table)
#     print(new_args)
#     print(new_kwages)
# s = "lllccc"
# func([1,2,3],(2,2),{"name","age"},{"name":"刘闯","age":18},s)
# 13、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
#
# def func(list1):
#     sum = ""
#     for i in list1:
#         sum += str(i)+"_"
#     return sum[:-1]
# aa = ['北京','上海','广州','深圳','成都','武汉',1,2,3]
# print(func(aa))

# 14、写函数,传入一个数字,返回这个数的阶乘
# 重点:累乘
#
# def func(num):
#     sum = 1
#     for i in range(1,num+1):
#         sum *= i
#     return sum
# print(func(3))
# 示例：1x2x3....
#
# 15、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
#
# def func():
#     list1 = []
#     Decks = ["红桃","梅花","方片","黑桃"]
#     num = ["3","4","5","6","7","8","9","10","J","Q","K","A","2"]
#     for i in Decks:
#         for j in num:
#             list1.append((i,j))
#     return list1
# print(func())
# 16、用代码写一个99乘法表
#
# def func():
#     for i in range(1,10):
#         for j in range(1,i+1):
#             print(f'{j}x{i}={i * j}\t', end='')
#         print()
# func()
# 17、编写函数，求1+2+3+…N的和
#
# def func(n):
#     sum = 0
#     for i in range(1,n+1):
#         sum += i
#     return sum
# n = 3
# sam = func(n)
# print(sam)
# 18、编写一个函数，求多个数中的最大值
#
# def func(nums):
#     max_num = 0
#     for i in nums:
#         if max_num < i:
#             max_num = i
#     return max_num
# nums = [,1,2,34,4,5,7,8,9,6]
# print(func(nums))
# 19、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
#
# def func(str1):
#     str2 = ''
#     for i in str1:
#         if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
#             str2 += i
#     return str2
# str1 = "123asd!@#$%   4ABC"
# print(func(str1))
# 20、编写一个函数，使用冒泡排序将一个列表由大到小排序
#


# 21、写一个函数，求多个数的平均值
#
# def fanc(nums):
#     num = 0
#     for i in nums:
#         num += i
#     return num / len(nums)
#
# nums = [1,2,3,4,5,6,7,8,9]
# print(fanc(nums))

# 22、写一个自己的len函数，统计指定序列中元素的个数
#
# def func(str1):
#     count = 0
#     for i in str1:
#         count +=1
#     return count
# str1 = [1,3,2,5]
# print(func(str1))
# 23、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
#
# def func(str1):
#     list1 = []
#     index = 1
#     for i in str1:
#         if index%2!=1:
#             list1.append(i)
#         index += 1
#     return list1
# str1 = [1,3,4,5,6,7,9]
# print(func(str1))

# 24、水仙花数：个位、十位、百位的立方加在一起等于数的本身，
#

# 25、定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# # 数组中的每个元素值不允许超过 100，但是可以等于100，
# # 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
#
# # 删除所有重复元素，使得每个元素只出现一次
# # 按照数字的大小，由高到低排序返回
#
# 26、定义函数 getLength，打印用户传入的容器类型和数据长度
#
# 27、定义函数 generateNum( )
# # 返回从0~9的十个数字中随机取出4个不重复的数字组成一个字符串
#
# 28、定义函数 moreThan(num)，判断输入的数字是否大于1500
#
# 29、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
#
# 示例：func_a(5,10)
# 5x5+6x6+7x7+8x8+9x9+10x10...
#
# 30、写函数，检查传入字典的每一个value长度，如果大于2，
# # 那么仅保留前两个长度的内容， 并将新内容返回给调用者
#
# 31、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
#
# 32、编写自定义函数，完成一个简单的减法运算函数
#
# 33、编写自定义函数，可以输出自己的名字即可。
#
# 34、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
#
# 当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
#
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
#
# 1 代表剪刀 2 代表石头 3 代表布
#
# 35、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
#
# 36、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
#
# 37、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
#
# 38、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
#
# 39、编写一个函数，接受一个整数作为参数，并返回其阶乘
#
# 40、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
#
# 41、编写一个函数，接受一个字符串列表作为参数，并返回一个字符串，其中包含所有字符串首字母的大写形式
#
# 42、编写一个函数，接受两个列表作为参数，并返回两个列表的交集
#
# 举例：
# list1 = [100,200,300,454]
# list2 = [454,789,125,46]
# 返回：[100,200,789,125,46]
#
# 43、 定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
